package com.epin.business.commons.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.epin.business.commons.entity.ForeignKey;
import com.epin.business.commons.entity.bo.ForeignKeyNormal;
import com.epin.business.commons.entity.vo.ForeignKeyParam;
import com.epin.business.system.entity.bo.UserNormal;


/**
 * <p>
 * 表伪外键记录表 服务类
 * </p>
 *
 * @author fujiajun
 * @since 2017-09-08
 */
public interface ForeignKeyService extends IService<ForeignKey> {
	
	
	/**
	 * <p>实现分页查找</p>
	 * 
	 * @param pageNumber 当前页面号
	 * @param pageSize 每页默认的结果数
	 * @param params 参数表
	 * 
	 * <p>
	 * 	参数表可填参数：
	 * 		<p>keyword 关键字</p>
	 * </p>
	 * 
	 * @return Page<>
	 * 
	 * @author fujiajun
	 * @since 2017-09-08
	 */
	Page<ForeignKeyNormal> selectForeignKeysPage(Integer pageNumber, Integer pageSize, Map<String, Object> params);
	
	
	/**
	 * <p>通过表名获取约束数据</p>
	 * 
	 * @param tableName 表名
	 * 
	 * @return List<>
	 * 
	 * @author fujiajun
	 * @since 2017-09-09
	 */
	List<ForeignKeyNormal> selectForeignKeysByTableName(String tableName);
	
	
	/**
	 * <p>添加外键约束</p>
	 * 
	 * @param fParam 外键数据参数
	 * @param operator 当前操作人
	 * 
	 * @return boolean
	 * 
	 * @author fujiajun
	 * @since 2017-09-09
	 */
	boolean insertForeignKey(ForeignKeyParam fParam, UserNormal operator);
	
	
	/**
	 * <p>根据id数组删除约束</p>
	 * 
	 * @param ids 约束id数组
	 * 
	 * @return boolean
	 * 
	 * @author fujiajun
	 * @since 2017-09-09
	 */
	boolean deleteForeignKeysByIds(List<Integer> ids);
	
	
	/**
	 * <p>判断指定表的某条记录是否被引用</p>
	 * 
	 * @param tableName 待检表名
	 * @param id 记录ID
	 * 
	 * @return boolean
	 * 
	 * @author fujiajun
	 * @since 2017-09-08
	 */
	boolean checkRecordIsQuoted(String tableName, String id);
}
